今天要來筆記 git merge 解決衝突
。
為什麼會有衝突呢?
假如我們 火箭隊
有一個專案,當我在分支上 coding 的時候,已經有夥伴在主要分支(master)上進行 commit 了,那就有可能程式碼都剛好寫在同一支檔案上,而檔案的某一行就剛好碰到惹~
這時候該怎麼辦呢?
在開始之前,我們重新複習以前的指令吧(((o(゚▽゚)o)))
前面的錢字號($)代表 command line 開始,真正在打的時候不用加入$窩~
$ mkdir project //建立新資料夾
$ cd project //進入資料夾
$ git init //建立數據庫
$ touch index.html //新增檔案
$ git add . //加入索引(暫存區)
git commit -m "修改紀錄" //提交 commit
圖示:
再來,新增一個分支
$ git branch 分支名稱
圖示:
我在 html 裡面新增 all.css
與 h1標籤
然後,我們把 aaa
加入索引並且 commit
之後使用 git checkout
回到 master
上
$ git checkout master
在 master
上,我再去新增一個 h1標籤
當我們新增完後,可以使用 git status
去查詢檔案狀態喲!
然後我們做加入索引並且 commit
的動作。
接著,重頭戲來惹,我們要合併嚕!
使用 git merge 分支名稱
--Oops!無法合併(我們看 Git 給我們的提示說發生衝突惹,要我們去解決它後,才能 commit)
再打開 index.html 看看發生什麼事
--他會跟你說有兩個東西重複了喇~你要留哪一個
那我們當然是留充滿愛der Hello World
呀!那麼就把厭世D Hell World 刪掉吧!
然後,很重要哦!
修改完成後,要記得加入索引再 commit 哦! 不確定檔案狀態怎麼樣的話可以用 git status
去查詢喲
另外, Sourcetree 會長這樣。
跟我的這張示意圖 484 長得 87 像 R :.゚ヽ(*´∀`)ノ゚.:。
今天實驗了一下,用一個 commit 裡開了兩個分支,並把兩個分支都做了 commit 的動作,接著合併兩個分支會發生什麼事。
這裡決定用 Sourcetree 來實驗:)
示意圖大概是長這樣
--在畫這張圖的時候好像被打到一直撞牆,然後觀念都錯了
之後我發現錯誤在於,我把分支化成圈圈,但其實圈圈的出現是有做 commit 的時候才會有的,再去看其他大神的文章,形容
分支
就像貼紙
那樣
Sourcetree 長這樣
我的 HEAD
會在 bbb
的分支上。
我這裡的問題是如果我的 master
要合併 那兩個分支的合併時該怎做(因為不知道分支名字),不過後來知道了,要看是從哪裡合併出去,再後來使用 git branch
就可以知道 HEAD
在哪了辣! 講得好複雜,看 Sourcetree 就會比較知道了。
--成功合併了:)
不刪的緣故是除了留著看以前紀錄用,更重要的是分支很便宜喇(只要 40 個字元大小)